package 二分.二分答案;

import java.util.Arrays;

/**
 * @author aodre , QQ : 480029069
 * @date 2023/6/28 16:59
 */
public class lc2064分配给商店的最多商品的最小值 {


    /*
      a / b ： 向上取整   （a + b - 1） / b


      难点： 这个 check 函数的 思考！
     */
    public int solution(int n,int nums[]){
        int l = 1, r = Arrays.stream(nums).max().getAsInt();
        while(l < r){
            int mid = l + r >> 1;
            if(check(nums,mid) > n){ // 说明 mid 太 小了， 这个是直接不满足条件的
                l = mid + 1;
            }else{
                r = mid;
            }

        }
        return l;
    }

    private int check(int[] nums, int mid) {
        int ans = 0;
        for(int i = 0;i < nums.length;i++){
            ans += (nums[i] + mid - 1) / mid;
        }
        return ans;
    }


}
